The present invention relates to electronic data processing, and more specifically concerns the creation and use of symbolic links for organizing file structures in a computer.
Most computer operating systems provide facilities for storing individual files in a structured arrangement from which they can be accessed by user application programs. Hierarchical file systems, the most common type, posit a root directory for each logical or physical storage device such as a disk drive. The root directory can contain individual files, and can also contain subdirectories which in turn contain files and subdirectories to any desired level. Directories and subdirectories are identical in function, and are sometimes called folders or other names. Some file systems, the best known of which is UNIX, attach file systems from different devices into a single file hierarchy. This is referred to as "mounting" a file system.
Users employ directory structures to organize their data and programs. For example, a storage device designated "C:" may contain legal documents in a directory "C:.backslash.LegalDocs". A user wishes to organize the documents by docket number, and accordingly sets up a subdirectory for each one: "C:.backslash.LegalDocs.backslash.111803", "C:.backslash.LegalDocs.backslash.98007", and so on. Each directory at the lowest level then contains files dealing with that particular docket. However, another user may desire to organize the same files on the same storage device by author, using directories such as "C:.backslash.LegalDocs.backslash.Norm_D_Plume", "C:.backslash.LegalDocs.backslash.Sue_Donym", etc. A third user may desire all files created within the current month to be in a single directory "C:.backslash.LegalDocs.backslash.Recent". But, if the operating system can only store each file in a single folder, then the files can be organized in only one way. Application programs such as document-control utilities sidestep this problem by allowing users to create profiles for each file, and then accessing the files in response to users' queries for files having certain characteristics in the profiles. Although these programs function well, they function with only one application program, or with applications that adhere to certain protocols or standards. Placing a number of existing files within a document-control system requires manually generating profiles for each file. These programs tend to be large, expensive, and difficult to configure or modify. In addition, switching from one document-control system to a different one usually requires redoing the profiles of all the files. Also, commercial document-control systems are overkill in many small tasks or ad-hoc situations.
Another approach introduces the concept of symbolic links. Many operating systems include a facility that allows a user or an administrator to create a link between an existing file or directory and a new name. Thereafter, both the new name and the old name refer to the same file or directory. Changes made during an access under either name appear under a later access under the other name as well. These links provide aliases for files, different ways to access the same physical entity.
Conventional links, however, are "static" symbolic links. They require explicit create and delete actions on behalf of a computer user. The links must be manually removed when no longer needed, even after the physical files or directories to which they refer have been removed from the system. The administration of static symbolic links quickly becomes unwieldy as the number of links increases. Because of oversights or interruptions, some files that should be linked will not be linked, and broken links will remain after their underlying files have been removed or renamed. Although system scripts or programs can be written by systems administrators to automate portions of link-management tasks, they are error-prone and have limited function. Such software must be run periodically, and links are likely to become obsolete between runs. Pushed beyond relatively simple file structures, static links obscure the relationships between file-system objects. Further, the creation and maintenance of static links are difficult enough to deter naive or casual users from even attempting to learn how they work.
Therefore, the file structures of many operating systems lack an effective facility for handling multiple organizations of files, folders, directories, and other objects in a manner that is error-free, transparent to all application programs, and simple to learn.